/*
 * Copyright 2007-2008  Lukasz Laszko lukaszlaszko@gmail.com
 * 
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for any purpose and without fee is hereby
 * granted, provided that the above copyright notice appear in all
 * copies and that both that the copyright notice and this
 * permission notice and warranty disclaimer appear in supporting
 * documentation, and that the name of the author not be used in
 * advertising or publicity pertaining to distribution of the
 * software without specific, written prior permission.
 * 
 * The author disclaim all warranties with regard to this
 * software, including all implied warranties of merchantability
 * and fitness.  In no event shall the author be liable for any
 * special, indirect or consequential damages or any damages
 * whatsoever resulting from loss of use, data or profits, whether
 * in an action of contract, negligence or other tortious action,
 * arising out of or in connection with the use or performance of
 * this software. 
 */
package org.pg.biomedics.asr.mpeg7;

import java.util.List;

import org.simpleframework.xml.Attribute;

import org.pg.biomedics.asr.mpeg7.code.PhoneticAlphabets;

/**
 * Abstract base class for both WordLexicon and PhoneLexicon
 * @author Lukasz Laszko
 */
public abstract class Lexicon 
{    
    // <editor-fold desc="Fields">
    
    /** Lexicon id */
    private String id = "GlobalLexicon";
    
    /** The name of an encoding scheme for phonetic symbols */
    private String phoneticAlphabet;   
    
    /** 
     *  The original size of the lexicon. In the case of a
     *  word lexicon, this should be the number of words originally known to the
     *  ASR system. 
     */
    private int numOfOriginalEntries;       
    
    // </editor-fold>     
    
    // <editor-fold desc="Properties">
    
    /**
     * Gets lexicon id
     * @return lexicon id
     */
    @Attribute(name="id")
    public String getId()
    {
        return id;
    }

    /**
     * Sets lexicon id
     * @param id lexicon id
     */
    @Attribute(name="id")
    public void setId(String id)
    {
        this.id = id;
    }
    
    /**
     * Gets the name of an encoding scheme for phonetic symbols
     * @return phoneticAlphabet name
     */
    @Attribute(name="phoneticAlphabet", required=false)
    public String getPhoneticAlphabet()
    {
        return this.phoneticAlphabet;
    }

    /**
     * Sets the name of an encoding scheme for phonetic symbols
     * @return phoneticAlphabet name
     */
    @Attribute(name="phoneticAlphabet", required=false)
    public void setPhoneticAlphabet(String phoneticAlphabet)
    {
        this.phoneticAlphabet = phoneticAlphabet;
    }

    /**
     *  Gets the original size of the lexicon. In the case of a
     *  word lexicon, this should be the number of words originally known to the
     *  ASR system. 
     * @return
     */
    @Attribute(name="numOfOriginalEntries")
    public int getNumOfOriginalEntries()
    {
        return this.numOfOriginalEntries;
    }

    /**
     *  Sets the original size of the lexicon. In the case of a
     *  word lexicon, this should be the number of words originally known to the
     *  ASR system. 
     * @param numOfOriginalEntries
     */
    @Attribute(name="numOfOriginalEntries")
    public void setNumOfOriginalEntries(int numOfOriginalEntries)
    {
        this.numOfOriginalEntries = numOfOriginalEntries;
    }    
    
    // </editor-fold>
}
